home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
...taking it to the Macs!
/
...taking it to the Macs!.iso
/
Extras
/
ActiveX Mac SDK
/
ActiveX SDK
/
Container Common
/
download.h
< prev
next >
Wrap
Text File
|
1997-01-03
|
3KB
|
89 lines
//
// DOWNLOAD.H
//
// Copyright (C) Microsoft Corporation, 1996
//
class CXSite; // Forward reference
class CContainer; // Forward reference
typedef struct _QUEUED_DOWNLOAD {
CXSite *SiteP;
struct _QUEUED_DOWNLOAD *NextP;
} QUEUED_DOWNLOAD;
class CCodeDownload:
public IBindStatusCallback
{
private:
long mRefCount; // reference count of object
LPVOID mEnumKeyP;
CXSite * mSiteP;
QUEUED_DOWNLOAD *mQueueP;
ErrorCode mDownloadResult;
unsigned char* mStreamDataP;
unsigned long mStreamLength;
Boolean mProcessINF;
LPOLESTR mEnd;
LPOLESTR mCurrent;
LPOLESTR mLastSectionMatch;
public:
CCodeDownload();
~CCodeDownload();
void QueueDownload(CXSite *inSiteP);
void InfAvailable(BOOL fSuccess);
void CodeAvailable(BOOL fSuccess);
private:
void StartNextDownload(void);
BOOL StartDownload(CXSite *inSiteP);
void ProcessNextSection(void);
BOOL OpenStream(CXSite *inSiteP, Boolean IsINFFile, LPOLESTR URLString);
// *** IUnknown methods ***
STDMETHOD(QueryInterface)(REFIID RefID, void** Obj);
STDMETHOD_(ULONG, AddRef)(void);
STDMETHOD_(ULONG, Release)(void);
// *** IBindStatusCallback methods ***
STDMETHOD(OnStartBinding)(DWORD BSCOption, IBinding* Binding);
STDMETHOD(GetPriority)(LONG* Priority);
STDMETHOD(OnLowResource)(DWORD reserved);
STDMETHOD(OnProgress)(ULONG Progress, ULONG ProgressMax, ULONG StatusCode, const char* StatusText);
STDMETHOD(OnStopBinding)(HRESULT Result, const char* Error);
STDMETHOD(GetBindInfo)(LPDWORD BINDF, BINDINFO* BindInfo);
STDMETHOD(OnDataAvailable)(DWORD BSCF, DWORD Size, FORMATETC* FormatEtc, STGMEDIUM* StgMedium);
STDMETHOD(OnObjectAvailable)(REFIID RefID, IUnknown* Unknown);
public:
BOOL GetProfileString(LPOLESTR pszSection, LPOLESTR pszKey, LPOLESTR
pszBuffer, UINT BufferSize);
BOOL GetFirstKey(LPOLESTR pszSection, LPVOID *pvEnumKey, LPOLESTR pszBuffer,
UINT BufferSize);
BOOL GetNextKey(LPVOID *pvEnumKey, LPOLESTR pszBuffer, UINT BufferSize);
private:
void SkipWhitespace(void);
void SkipToNextLine(void);
BOOL FindSection(LPOLESTR pszSection);
BOOL GetKeyCommon(LPVOID *pvEnumKey, LPOLESTR pszBuffer, UINT BufferSize);
};
typedef enum {
FILEXTN_NONE,
FILEXTN_UNKNOWN,
FILEXTN_HQX,
FILEXTN_INF
} FILEXTN;
BOOL FindActiveXCacheFolder(short *foundvRefNum, long *foundDirID);
BOOL FindDownloadFolder(short *foundvRefNum, long *foundDirID, BOOL
fExtensionsFolder);
FILEXTN GetFileTypeFromExtension(LPOLESTR pszURL);
BOOL GetVersionFromFile(FSSpec *spec, LPDWORD pdwVersion);
BOOL GetVersionFromURL(LPOLESTR pszURL, LPDWORD pdwVersion);
BOOL CheckCLSIDVersion(REFCLSID rclsid, DWORD dwMinimumVersion);